#ifndef __XLX_API_H_
#define __XLX_API_H_

#include "xlx_protocol.h"


void tutuapi_init(void);

//连接服务器
int tutuapi_connect_server(void);

//发起登录认证
void tutuapi_send_login_msg(TutuMsgLogin *login);

//发送心跳数据
void tutuapi_send_heart_msg(TutuMsgHeart *heart);
//发送心跳数据，直接取全局配置中缓存的数据
void tutuapi_send_heart_msg2(void);

//请求同步服务器时间
void tutuapi_send_synctime_msg(void);

//上报单个gps位置
// void tutuapi_send_uploadgps_msg(TutuMsgGps *gps);
// void tutuapi_send_uploadgps_msg2(void);
//上报多个gps位置
//void tutuapi_send_gpsmore_msg(TutuSndBuffer *buffer,TutuMsgGps **gps_list,int gps_size);

/*上报设备状态*/
void tutuapi_send_device_status_msg(void);

/*打印网络日志*/
void tutuapi_send_net_logger_print(const char* fmt, ...);

#define tutuapi_send_net_logger_info(fmt,...) if(tutu_net_logger_level<=2){tutuapi_send_net_logger_print(fmt,##__VA_ARGS__);}

#define tutuapi_send_net_logger_debug(fmt,...) if(tutu_net_logger_level<=1){tutuapi_send_net_logger_print(fmt,##__VA_ARGS__);}

#define tutuapi_send_net_logger_error(fmt,...) if(tutu_net_logger_level<=3){tutuapi_send_net_logger_print(fmt,##__VA_ARGS__);}

/**
 * 发送网络日志到服务器
 * @param buffer 发送缓冲
 * @param logger 日志字符串
 */
void tutuapi_send_net_logger(TutuSndBuffer *buffer,const char *logger);

/**
 * 上报复合定位信息
 * @param buffer 发送缓冲
 * @param station_list 多个基站数据
 * @param station_size 基站个数
 * @param wifi_list 多个wifi数据
 * @param wifi_size wifi个数
 * @param blue_list 多个蓝牙数据
 * @param blue_size 蓝牙个数
 */
void tutuapi_send_lbs_msg(
    TutuSndBuffer *buffer,
    TutuMsgBaseStation **station_list,int station_size,
    TutuMsgWifi **wifi_list,int wifi_size,
    TutuMsgBluetooth **blue_list,int blue_size
    );

/**
 * 上传声控报警
 * @param buffer 发送缓冲区
 * @param total 文件总共切片数量
 * @param seq 当前序号
 * @param datavoice数据
 * @param lenvoice数据长度
 */
void tutuapi_send_upload_audio_msg(TutuSndBuffer *buffer,int total,int seq,const char *data,int len);

/**
 * 上传声控报警(支持音频格式定义)
 * @param buffer 发送缓冲区
 * @param total 文件总共切片数量
 * @param seq 当前序号
 * @param datavoice数据
 * @param lenvoice数据长度
 * @param formatvoice格式，0：AMR，1：WAV
 */
void tutuapi_send_upload_audio2_msg(TutuSndBuffer *buffer,int total,int seq,const char *data,int len, int format);

/**
 * 消息队列待接收的音频消息数
 * @return 队列中剩余的数据包数
 */
int tutuapi_get_audio_msg_count();

/**
 * TCP消息队列待发送的音频数量
 * @return 队列中剩余的消息数
 */
int tutuapi_get_audio_queue_count();

/**
 * 上传告警
 * @param alert 告警基本数据
 * @param data 多个告警事件内容
 * @param len 数据长度
 */
void tutuapi_send_upload_alert_msg(TutuMsgAlert *alert,const char*data,int len);

/**
 * 回复指令响应
 * @param actionid 任务id
 * @param data 指令内容
 * @param len 指令内容长度
 */
void tutuapi_send_stringaction(u16 actionid,const char *data,int len);

/**
 * @brief 上报气压/温度值
 * 
 * @param airInfo 气压信息
 */
void tutuapi_send_upload_air_msg(TutuMsgAir *airInfo);

#endif
